<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>


    <script>

        // 函数封装的步骤
        //    1  普通的实现功能
        //    2  提取参数
        //    3  考虑是否需要返回值
        //    4  写上说明书---注释

        // 最大公约数
        // function gcd() {
        //     var a = 4;
        //     var b = 8;
        //     // 倒着写
        //     for (var i = a < b ? a : b; i >= 1; i--) {
        //         if (a % i === 0 && b % i === 0) {
        //             document.write(i);
        //             break;   // 一定不能省略
        //         }
        //     }
        // }

        // 2 提取参数      求两个数的最大公约数   给两个数
        // function gcd(a, b) {
        //     // var a = 4;
        //     // var b = 8;
        //     // 倒着写
        //     for (var i = a < b ? a : b; i >= 1; i--) {
        //         if (a % i === 0 && b % i === 0) {
        //             document.write(i);
        //             break;   // 一定不能省略
        //         }
        //     }
        // }


        // 3 返回值    求两个数的最大公约数  是一个结果
        // function gcd(a, b) {
        //     // var a = 4;
        //     // var b = 8;
        //     // 倒着写
        //     for (var i = a < b ? a : b; i >= 1; i--) {
        //         if (a % i === 0 && b % i === 0) {
        //             // document.write(i);    // 不能直接写在页面上
        //             break;   // 一定不能省略
        //         }
        //     }
        //     return i ;
        // }


        // 优化
        function gcd(a, b) {
            // var a = 4;
            // var b = 8;
            // 倒着写
            for (var i = a < b ? a : b; i >= 1; i--) {
                if (a % i === 0 && b % i === 0) {
                    // return 会结束函数，循环也就结束了
                    return i;
                }
            }
        }
        // var res = gcd(6, 8);
        // document.write(res);


        // 第二种方法实现
        function gcd2(a, b) {
            // 把结果存起来   不断替换
            var res = 1;
            for (var i = 1; i <= (a < b ? a : b); i++) {
                if (a % i === 0 && b % i === 0) {
                    res = i;
                }
            }
            return res;
        }

        // var res = gcd2(6, 8);
        // document.write(res);





        // 最小公倍数   结果   返回值

        function gbs(a, b) {
            // 从较大的值开始
            for (var i = a > b ? a : b; ; i++) {
                if (i % a === 0 && i % b === 0) {
                    // 
                    // document.write(i);
                    // break;
                    return i ;
                }
            }
        }

        gbs(4, 6);

    </script>

</body>

</html>